

#ifndef _Oz_WebUi_ITemplate_H_
#define _Oz_WebUi_ITemplate_H_

#include <Oz/Webui/Webui.h>

namespace Oz{
    namespace Webui{
        /**
         * This is the interface for manage the application templates.
         **/
        class ITemplate{
            public:
            virtual ~ITemplate();
            virtual void setFile(const std::string& path) = 0;
            virtual void reload() = 0;
            virtual void reloadIfChanged() = 0;
            virtual void addTempalteForSection(const std::string& section,const ITemplatePtr& tpl) = 0;
            virtual ITemplatePtr getTemplateForSection(const std::string& name)const = 0;
            virtual ITemplateSeq getSectionTemplates()const = 0;
            virtual std::string getMarkup()const = 0;
            virtual std::string saveMarkup(const std::string& name) = 0;
            protected:
            ITemplate();
            ITemplate& operator=(const ITemplate& rhs);
        };
    }
}
#endif
